# Docker image for springboot file run
# VERSION 0.0.1
# Author: eangulee
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER imua
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件，并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD litemall-admin-api-0.1.0.jar lumiere-admin-project.jar
# 运行jar包
#对外暴露端口
#定义jvm参数变量
ENV JAVA_OPTS="-XX:NewRatio=1 -XX:SurvivorRatio=1 -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -Xss1024k -Xmx300m -Xms300m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:/data/logs/gc.log"
RUN bash -c 'touch /lumiere-admin-project.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/lumiere-admin-project.jar"]
# Spring Boot 项目的运行依赖 Java 环境，所以我自己的镜像基于 Java 镜像来构建。
  #考虑到 Docker 官方镜像下载较慢，我这里使用了网易提供的 Docker 镜像。
  #由于 Spring Boot 运行时需要 tmp 目录，这里数据卷配置一个 /tmp 目录出来。
  #将本地 target 目录中打包好的 .jar 文件复制一份新的 到 /app.jar。
  #最后就是配置一下启动命令，由于我打包的 jar 已经成为 app.jar 了，所以启动命令也是启动 app.jar。
  #这是我们配置的一个简单的 Dockerfile。
  #将打好的jar包和Dockerfile文件复制到服务器里,
 # 在该文件下 指令：docker build -t name . docker build -t litemall-admin-api-0.1.0.jar .
 #name 自己命名
 #上面的.一定不能少

  #执行docker build命令，docker就会根据Dockerfile里你定义好的命令进行构建新的镜像。

  #-t代表要构建的镜像的tag，.代表当前目录，也就是Dockerfile所在的目录。

  #然后就可以看到在下载各种依赖的maven、各种jar，构建完毕后，启动项目。
  # docker run --name lumiere-admin -p 33081:33081 -d lumiere-admin-project:latest (这个名字和创建的镜像名字一样)

  #然后查看docker的镜像 docker images 就可以看到新的镜像了
 # 在该docker文件下使用 指令：docker run --name 自己命名 -d -p 8080:8080 镜像 运行该springBoot项目，可以看到构建完毕的景象docker了
 #查看日志 docker logs -f -t --tail 行数 容器名
